package in.obj.annotation;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import android.location.Location;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@ToString public class LocationAnnotation extends Annotation
{
private static final long serialVersionUID = 895718951230000123L;
@Getter @Setter private double lat = 0.0, lng = 0.0;
@Getter private float accuracy = Float.MIN_VALUE;
@Getter @Setter private long time = 0L;
private void writeObject(ObjectOutputStream oos) throws IOException
{
oos.writeDouble(lat);
oos.writeDouble(lng);
oos.writeFloat(accuracy);
oos.writeLong(time);
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException
{
lat = ois.readDouble();
lng = ois.readDouble();
accuracy = ois.readFloat();
time = ois.readLong();
}
public LocationAnnotation()
{
}
public LocationAnnotation(Location l)
{
if (l != null)
{
lat = l.getLatitude();
lng = l.getLongitude();
accuracy = l.getAccuracy();
time = l.getTime();
}
}
/*@Override public String getPreviewUrl()
{
Uri uri = Uri.parse(data.toString());
return URLUtils.getMapThumbnail(uri);
}*/
public boolean hasAccuracy()
{
return accuracy > Float.MIN_VALUE;
}
@Override public JsonElement toAnnotation()
{
JsonObject object = new JsonObject();
JsonObject values = new JsonObject();
values.addProperty("latitude", getLat());
values.addProperty("longitude", getLng());
object.addProperty("type", getAnnotationKey());
object.add("value", values);
return object;
}
@Override public String getAnnotationKey()
{
return "net.app.core.geolocation";
}
}